# 2.写一个游戏机器人自动游戏比赛，说明：先定义一个基类：AutoPeople，类中存在一个全局类成员。
# 所有队员有效GameDic=["石头","剪刀","布"] ,然后定义一个分数值Score。
#【提示： GameDic中  如果相等就是平均，任意下标相减等于-1 或 2 就是胜利，否则就是失败 】

# 用例
# "石头" - "剪刀" = -1    胜
# "石头"  - "布" = -2     负
# "石头"  - "石头" =0     平

#  "剪刀"  - "石头" = 1   负
# "剪刀" - "剪刀" =0      平
# "剪刀" - "布"=-1        胜

#  "布" - "石头" = 2      胜
# "布" - "剪刀" =1        负
# "布"- "布"=0            平

#分析
#1.AutoPeople 类 -- 能记下分数，能出拳
#2.Game 类  -- 根据2个人出的拳，判断谁胜谁负
#3.PlayGame 类 -- 指定谁和谁游戏，指定 局数 ， 能获取结果。
import random
class AutoPeople(object):
    GameDic=["石头","剪刀","布"]
    def __init__(self,name):
        self.name=name
        self.score=0

    def add_score(self):
        """加分:一次加一分"""
        self.score+=1
    def show_punch(self):
        """出拳"""
        return random.choice(AutoPeople.GameDic)
    def show_score(self):
        """展示我的分数"""
        print(f"{self.name}:{self.score}")

class Game(object):
    """只负责规则，判断谁胜利了..."""
    @classmethod
    def get_result(cls,punch1,punch2):
        """punch1，2: 出拳的结果"""
        result=AutoPeople.GameDic.index(punch1)-AutoPeople.GameDic.index(punch2)
        # if result== -1 or result==2:
        if result in (-1,2):
            return "胜"
        elif result ==0:
            return "平"
        else:
            return "负"

class PlayGame(object):
    """指定谁和谁游戏，指定 局数 ， 能获取结果"""
    def __init__(self,AutoPeople1,AutoPeople2):
        self.ap1=AutoPeople1
        self.ap2=AutoPeople2

    def pgame_one(self):
        """玩一次游戏"""
        punch1=self.ap1.show_punch()
        punch2=self.ap2.show_punch()

        result=Game.get_result(punch1, punch2)
        if result=="胜":
            self.ap1.add_score()
        elif result=="负":
            self.ap2.add_score()
        print(f"{self.ap1.name}-{punch1} vs {self.ap2.name} -{punch2}: {result}")
    def pgame_many(self,much):
        """玩多次"""
        for i in range(much):
            self.pgame_one()


if __name__ == '__main__':
    ap1=AutoPeople("张三")
    ap2=AutoPeople("李四")
    ap3=AutoPeople("王五")
    pg=PlayGame(ap1,ap2)
    pg.pgame_many(5)
    pg2=PlayGame(ap1,ap3)
    pg2.pgame_many(5)
    print(ap1.score)
    print(ap2.score)
    print(ap3.score)














